package com.cc.data_explore.logic.rule;

import org.dromara.hutool.core.convert.impl.NumberConverter;

import java.util.function.Function;

/**
 * MultiplierRule 类实现了 Function<String, String> 接口，
 * 其作用是将输入的字符串转换为 Double 类型，乘以指定的系数后，再将结果转换回字符串。
 *
 * @author cc
 */
public class MultiplierRule implements Function<String, String> {
    /**
     * 乘法系数，用于在后续的 apply 方法中对输入的数值进行乘法运算。
     */
    private final double factor;

    /**
     * 构造函数，用于初始化 MultiplierRule 类的实例。
     *
     * @param factor 乘法系数，用于在后续的 apply 方法中对输入的数值进行乘法运算。
     */
    public MultiplierRule(double factor) {
        this.factor = factor;
    }

    /**
     * 对输入的字符串进行乘法运算，并返回结果。
     * 该方法首先将输入的字符串转换为 Double 类型，然后乘以指定的系数，最后将结果转换回字符串。
     *
     * @param input 要进行乘法运算的输入字符串。
     * @return 经过乘法运算后的结果字符串。
     */
    @Override
    public String apply(String input) {
        Double convert = NumberConverter.INSTANCE.convert(Double.class, input);
        convert = convert * factor;
        return convert.toString();
    }

}